/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tk.eigh.ksvg.component.text;

import java.util.List;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;

/**
 *
 * @author nt
 */
interface _TextProperties {

    /**
     * x = "&lt;list-of-coordinates&gt;"
     *<br/>
     * If a single &lt;coordinate&gt; is provided, then the value represents the new
     * absolute X coordinate for the current text position for rendering the
     * glyphs that correspond to the first character within this element or any
     * of its descendants. If a comma- or space-separated list of n
     * &lt;coordinate&gt;s is provided, then the values represent new absolute X
     * coordinates for the current text position for rendering the glyphs
     * corresponding to each of the first n characters within this element or
     * any of its descendants. For additional processing rules, refer to the
     * description of the ‘x’ attribute on the ‘tspan’ element. If the attribute
     * is not specified, the effect is as if a value of "0" were specified.
     * Animatable: yes.
     */
    @JSFProperty
    public abstract String getX();

    /**
     * y = "&lt;list-of-coordinates&gt;"
     *<br/>
     * The corresponding list of absolute Y coordinates for the glyphs
     * corresponding to the characters within this element. The processing rules
     * for the ‘y’ attribute parallel the processing rules for the ‘x’
     * attribute. If the attribute is not specified, the effect is as if a value
     * of "0" were specified. Animatable: yes.
     */
    @JSFProperty
    public abstract String getY();

    /**
     * dx = "&lt;list-of-lengths&gt;"
     *<br/>
     * Shifts in the current text position along the x-axis for the characters
     * within this element or any of its descendants. Refer to the description
     * of the ‘dx’ attribute on the ‘tspan’ element. If the attribute is not
     * specified on this element or any of its descendants, no supplemental
     * shifts along the x-axis will occur. Animatable: yes.
     */
    @JSFProperty
    public abstract String getDx();

    /**
     * dy = "&lt;list-of-lengths&gt;"
     *<br/>
     * Shifts in the current text position along the y-axis for the characters
     * within this element or any of its descendants. Refer to the description
     * of the ‘dy’ attribute on the ‘tspan’ element. If the attribute is not
     * specified on this element or any of its descendants, no supplemental
     * shifts along the y-axis will occur. Animatable: yes.
     */
    @JSFProperty
    public abstract String getDy();

    /**
     * rotate = "&lt;list-of-numbers&gt;"
     *<br/>
     * The supplemental rotation about the current text position that will be
     * applied to all of the glyphs corresponding to each character within this
     * element. Refer to the description of the ‘rotate’ attribute on the
     * ‘tspan’ element. If the attribute is not specified on this element or any
     * of its descendants, no supplemental rotations will occur. Animatable: yes
     * (non-additive).
     */
    @JSFProperty
    public abstract String getRotate();

    /**
     * textLength = "&lt;length&gt;"
     *<br/>
     * The author's computation of the total sum of all of the advance values
     * that correspond to character data within this element, including the
     * advance value on the glyph (horizontal or vertical), the effect of
     * properties ‘kerning’, ‘letter-spacing’ and ‘word-spacing’ and adjustments
     * due to attributes ‘dx’ and ‘dy’ on ‘tspan’ elements. This value is used
     * to calibrate the user agent's own calculations with that of the author.
     * The purpose of this attribute is to allow the author to achieve exact
     * alignment, in visual rendering order after any bidirectional reordering,
     * for the first and last rendered glyphs that correspond to this element;
     * thus, for the last rendered character (in visual rendering order after
     * any bidirectional reordering), any supplemental inter-character spacing
     * beyond normal glyph advances are ignored (in most cases) when the user
     * agent determines the appropriate amount to expand/compress the text
     * string to fit within a length of ‘textLength’. A negative value is an
     * error (see Error processing). If the attribute is not specified, the
     * effect is as if the author's computation exactly matched the value
     * calculated by the user agent; thus, no advance adjustments are made.
     * Animatable: yes.
     */
    @JSFProperty
    public abstract String getTextLength();

    /**
     * lengthAdjust = "spacing|spacingAndGlyphs"
     *<br/>
     * Indicates the type of adjustments which the user agent shall make to make
     * the rendered length of the text match the value specified on the
     * ‘textLength’ attribute. 'spacing' indicates that only the advance values
     * are adjusted. The glyphs themselves are not stretched or compressed.
     * 'spacingAndGlyphs' indicates that the advance values are adjusted and the
     * glyphs themselves stretched or compressed in one axis (i.e., a direction
     * parallel to the inline-progression-direction). The user agent is required
     * to achieve correct start and end positions for the text strings, but the
     * locations of intermediate glyphs are not predictable because user agents
     * might employ advanced algorithms to stretch or compress text strings in
     * order to balance correct start and end positioning with optimal
     * typography. Note that, for a text string that contains n characters, the
     * adjustments to the advance values often occur only for n−1 characters
     * (see description of attribute ‘textLength’), whereas stretching or
     * compressing of the glyphs will be applied to all n characters. If the
     * attribute is not specified, the effect is as a value of 'spacing' were
     * specified. Animatable: yes.
     */
    @JSFProperty
    public abstract String getLengthAdjust();
}
